package com.wf.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import com.wf.web.base.domain.BaseDomain;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

/**
 * 标的表
 * @TableName loan_targets
 */
// - `@Document` 作用在类，标记实体类为文档对象，一般有四个属性
//        - indexName：对应索引库名称
//        - type：对应在索引库中的类型   在ElasticSearch7.x中取消了type的概念
//        - shards：分片数量，默认5
//        - replicas：副本数量，默认1
//        - `@Id` 作用在成员变量，标记一个字段作为id主键
//        - `@Field` 作用在成员变量，标记为文档的字段，并指定字段映射属性：
//        - type：字段类型，取值是枚举：FieldType
//        - index：是否设置分词，布尔类型，默认是true
//        - store：是否存储，布尔类型，默认是false
//        - analyzer：分词器名称：ik_max_word
//        - createIndex 不创建默认是standard标准分词器索引库，否则会出现异常*/
@Data
@Document(indexName="loantargets",createIndex = false)
public class LoanTargetsES implements Serializable {

    private static final long serialVersionUID = -7287632975734154608L;
    /**
     * 标的ID，主键
     */
    @Id
    private Integer targetId;

    /**
     * 借款人ID，外键
     */
    @Field(index=false,analyzer="ik_max_word",store=true,searchAnalyzer="ik_max_word",type = FieldType.Integer)
    private Integer borrowerId;

    /**
     * 借款金额
     */
    @Field(index=false,analyzer="ik_max_word",store=true,searchAnalyzer="ik_max_word",type = FieldType.Double)
    private BigDecimal amount;

    /**
     * 借款利率
     */
    @Field(index=false,analyzer="ik_max_word",store=true,searchAnalyzer="ik_max_word",type = FieldType.Double)
    private BigDecimal interestRate;

    /**
     * 借款期限，以天为单位
     */
    @Field(index=true,analyzer="ik_max_word",store=true,searchAnalyzer="ik_max_word",type = FieldType.Integer)
    private Integer loanTerm;

    /**
     * 借款目的
     */
    @Field(index=true,analyzer="ik_max_word",store=true,searchAnalyzer="ik_max_word",type = FieldType.Text)
    private String purpose;

    /**
     * 标的状态：待审、通过、拒绝、已筹满
     */
    @Field(index=false,analyzer="ik_max_word",store=true,searchAnalyzer="ik_max_word",type = FieldType.Text)
    private String status;
    /**
     * 备注
     */
    @Field(index=true,analyzer="ik_max_word",store=true,searchAnalyzer="ik_max_word",type = FieldType.Text)
    private String remark;


}